package com.rpcLearning.client;

import com.rpcLearning.proto.Peer;
import com.rpcLearning.transport.TransportClient;

import java.util.List;

/**
 * @author:zyh
 * @Time:2021-03-17-20:56
 * @email:1269231889@qq.com
 * 表示选择那个server去连接
 */
public interface TransportSelector {
    /*
    * 初始化selector
    * @param peers 可以连接的server端点信息
    * @param count 可以建立多少个连接
    * @param clazz client实现的类
    * */
    void init(List<Peer> peers,
              int count,
              Class<? extends TransportClient> clazz);
    /*
    * 选择要给transport与server做交互
    *
    *  @return 网络client
    * */
    TransportClient select();

    /*
    *  释放用完的client
    * */
    void release(TransportClient client);

    void close();
}
